iT邦幫忙

2017 iT 邦幫忙鐵人賽
DAY 7
0
自我挑戰組

白鬍子老頭30天 Swift Ios系列 第 19

Day(7+12) Lecture 9-1 TableView

  • 分享至 

  • xImage
  •  

TableView

是UIView的subclass,展現資料在一個Table裡

兩種Style

  • plain style

通常會是動態資料
http://ithelp.ithome.com.tw/upload/images/20170102/20103833rnkRBa2WtN.png

  • group style

通常會擺靜態的就都不變
http://ithelp.ithome.com.tw/upload/images/20170102/20103833RESpVnAzeb.png

內部

  • Header

可以放你想放的UIView在裡頭像是範例中的TextField

var tableHeaderView : UIView

http://ithelp.ithome.com.tw/upload/images/20170103/20103833huc3DJfeTS.png

  • Footer

跟Header差不多

var tableFooterView : UIView

http://ithelp.ithome.com.tw/upload/images/20170103/20103833jMI5DGuFXO.png

Section

http://ithelp.ithome.com.tw/upload/images/20170103/201038331SXSgJtk8V.png

  • Section header

通常是string也可以是其他uiview

  • Section footer

一樣section也是有footer的

  • Row

每個section row 的數量不同
是UIView的subclass叫做UITableViewCell
Cell 有四種Style
http://ithelp.ithome.com.tw/upload/images/20170103/20103833BMm61n3HS3.png

如何使用呢

99%的情況會使用UITableViewController
如果你拉出來到StoryBoard,階層裡的view會直間變成TableView
http://ithelp.ithome.com.tw/upload/images/20170103/201038333nyb1AZnqD.png
delegate跟datasources都設置好了(如果你是直接拉UITableViewController出來的話)

Prototype Cell

http://ithelp.ithome.com.tw/upload/images/20170103/20103833UUFAfp6Ij4.png
像是樣板,不同樣板展顯不同內容
系統會重新使用它們來展示你的資料

Custom Cell不能直接與UITableViewController hook
因為可能會有上百個 cell
你必須建立一個UITableViewCell的subclass然後把layout hook上

New File > subclassOf - UITableViewCell >Identity inspector Class - 你的new custom cell

UITableView Protocol

  • Delegate
    控制TableView要怎麼顯示

  • DataSources
    控制有什麼資料在TableView裡

  • 三個比較重要的
    1.有幾個Section?
    預設是1,所以你不打他是1

 override func numberOfSections(in tableView: UITableView) -> Int {
        return 0
    }

2.有幾個Row在個別的Section?
這個就是必須的

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 0
    }

3.給我一個UITabeViewCell subclass好畫出這個Row

 override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
 let cell = tableView.dequeueReusableCell(withIdentifier: "reuseIdentifier", for: indexPath)
 // Configure the cell...
 return cell
    }

plus. RowAction

   override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        
    }

重載資料

呼叫這行

tableView.reloadData()

讓Cell符合內容高度

   override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
//設定高度
}

上一篇
Day(7+11) Lecture 8-3 TextField
下一篇
Day(7+13) Lecture 9-2 卡關了
系列文
白鬍子老頭30天 Swift Ios30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言